#ifndef ARBOL_H_
#define ARBOL_H_
#include "Nodo.h"
#include <cstdio>
#include <sstream>
#include <fstream>
#include <map>

class Arbol {

public:

	Arbol();

	Arbol(Nodo* padre);

	~Arbol();

	void CambiarNumNodos(int cambio);

	void SetDirActual(Nodo* padre);

	void SaveTree();

	void LoadTree();

	void WriteBlock(ofstream* disco,ofstream* sectores,ifstream* fichero);

	void ReadBlock();

	void WriteFile(string nomFile);

	void ReadFile();

	void SelectCommand(string command,string nomDir,string nomNuevo);

	string GetNomDir();



private:

	void GuardarArbol(Nodo* padre,ofstream* f);
	void CargarArbol(Nodo* padre,ifstream* f,int* id);
	void LiberarArbol(Nodo* padre);
	void ls();
	void pwd();
	void cd(string nomDir);
	void mv(string nomDir,string nomNuevo);
	void cp(string nomDir,string nomNuevo);
	void mkdir(string nomDir);
	void rmdir(string nomDir);
	void rm(string nomFile);
	void ActualizarSectLib(Nodo* n);
	void upload(string nomFile);


	Nodo* nodoPadre;
	Nodo* directorioActual;
	int indDiscos [4];
	int numeroNodos;
	int ultimoID;
	int nivelActual;
	int posicionPuntero;

};

#endif /* ARBOL_H_ */
